package com.ld.tool.util;

import java.util.ArrayList;
import java.util.List;

import com.ld.shieldsb.common.composition.util.ConvertUtil;
import com.ld.shieldsb.common.core.collections.ListUtils;
import com.ld.shieldsb.common.core.util.StringUtils;
import com.ld.shieldsb.common.core.util.properties.PropertiesUtil;
import com.ld.tool.model.tool.OnlineToolGroupTypeModel;
import com.ld.tool.model.tool.OnlineToolModel;

public class OnlineToolConfig {
    public static final PropertiesUtil CONFIG = new PropertiesUtil("systemtool.properties"); // 配置文件

    /**
     * 获取在线工具
     * 
     * @Title getOnlineTools
     * @author 吕凯
     * @date 2019年9月4日 上午8:42:50
     * @return List<OnlineToolModel>
     */
    public static List<OnlineToolModel> getOnlineTools() {
        List<OnlineToolModel> toolModels = new ArrayList<>();
        List<String> list = CONFIG.getStringList("tool.onlinetool");
        if (ListUtils.isNotEmpty(list)) {
            list.stream().forEach(str -> {
                OnlineToolModel model = ConvertUtil.jsonStr2Obj(str, OnlineToolModel.class);
                toolModels.add(model);
            });
        }
        return toolModels;
    }

    /**
     * 
     * 按照来源（jar包）分组获取在线工具文件
     * 
     * @Title getOnlineToolsGroupByType
     * @author 吕凯
     * @date 2019年12月11日 下午2:20:17
     * @return List<OnlineToolGroupTypeModel>
     */
    public static List<OnlineToolGroupTypeModel> getOnlineToolsGroupByType() {
        List<OnlineToolModel> tools = getOnlineTools();
        List<OnlineToolGroupTypeModel> groups = new ArrayList<>();
        for (OnlineToolModel resource : tools) {
            String group = resource.getGroup();
            if (StringUtils.isBlank(group)) {
                group = "default";
            }
            String[] groupArrs = group.split(",");
            for (String groupVal : groupArrs) {
                OnlineToolGroupTypeModel source = new OnlineToolGroupTypeModel();
                source.setType(groupVal);
                int index = groups.indexOf(source);
                if (index >= 0) {
                    source = groups.get(index);
                } else {
                    groups.add(source);
                }
                if (source.getModels() == null) {
                    source.setModels(new ArrayList<>());
                }
                source.getModels().add(resource);
            }
        }
        return groups;
    }

}
